
# 封装小区信息提取和测评报告处理为函数
# 参数：小区点击坐标
# 返回值：0-成功 1-失败
process_community() {
    local tap_x=$1
    local tap_y=$2

    echo "====================================="
    echo "开始处理坐标($tap_x, $tap_y)的小区"

    # 点击进入小区详情
    adb shell input tap $tap_x $tap_y
    sleep 2
    adb shell input swipe 220 700 220 300 300
    adb shell input tap 320 135
    adb shell input swipe 220 700 220 400 300

    echo "正在导出UI布局..."
    adb shell uiautomator dump /sdcard/ui.xml >/dev/null 2>&1
    sleep 1
    echo "定位测评报告按钮..."
    report_bounds=$(adb shell cat /sdcard/ui.xml | grep -A 1 'text="查看完整测评报告"' | grep -oP 'bounds="\K[^"]+' | head -n 1)
    if [ -z "$report_bounds" ]; then
        echo "未找到测评报告按钮，跳过当前小区"
        adb shell input keyevent 4  # 返回
        return 1
    fi

    # 解析坐标
    b1=$(echo $report_bounds | cut -d',' -f1 | tr -d '[]')
    b2=$(echo $report_bounds | cut -d',' -f2 | cut -d']' -f1)
    b3=$(echo $report_bounds | cut -d',' -f2 | cut -d'[' -f2)
    b4=$(echo $report_bounds | cut -d',' -f3 | tr -d '[]')
    report_x=$(( (b1 + b3) / 2 ))
    report_y=$(( (b2 + b4) / 2 ))

    # 5. 点击测评报告按钮
    echo "点击测评报告..."
    adb shell input tap $report_x $report_y
    sleep 2  # 等待页面加载完成

    # 6. 点击文本区域激活输入焦点
    echo "激活文本区域..."
    adb shell input tap 360 500
    sleep 1

    adb shell input keyevent --longpress 29  # 长按Ctrl（29是Ctrl键编码，部分设备需调整）
    sleep 1
    adb shell input keyevent 57              # 按A键（全选，57是A键编码）
    sleep 1
    adb shell input keyevent 67              # 按C键（复制，67是C键编码，无需长按）
    sleep 1

    # 2. 读取剪贴板并解码十六进制数据
    evaluation_text=$(adb shell "service call clipboard 1 i32 1 | \
        grep -oP '0x[0-9a-f]+: \K[0-9a-f ]+' | \  # 提取十六进制数据部分
        tr -d ' ' | \                             # 去除空格，合并为纯十六进制字符串
        xxd -r -p | \                             # 十六进制解码为二进制
        iconv -f utf-16le -t utf-8 | \            # 转换编码（Android剪贴板默认UTF-16小端）
        sed -n '/^$/!p'")                         # 过滤空行

    if [ -z "$evaluation_text" ]; then
        echo "未获取到测评文本，跳过当前小区"
        adb shell input keyevent 4  # 返回小区详情页
        adb shell input keyevent 4  # 返回列表页
        return 1
    fi

    echo "测评文本提取成功"
    echo "-------------------------------------"
    echo "$evaluation_text"
    echo "-------------------------------------"

    # 清理临时文件
    adb shell rm /sdcard/ui.xml

    # 返回列表页
    adb shell input keyevent 4  # 返回小区详情页
    adb shell input keyevent 4  # 返回列表页
    sleep 2

    echo "当前小区处理完成"
    return 0
}

#打开贝壳的软件
adb shell am start -n com.lianjia.beike/com.lianjia.activity.MainActivity                                                       、
sleep 3
#点击二手房对应位置
adb shell input tap 79 300
#点击找小区对应位置
sleep 1
adb shell input tap 224 287
sleep 1
process_community 220 315 || echo "第一个小区处理失败，继续下一个"
sleep 1
process_community 220 510 || echo "第二个小区处理失败，继续下一个"
sleep 1
process_community 220 700 || echo "第三个小区处理失败，继续下一个"
sleep 1
process_community 220 890 || echo "第四个小区处理失败，继续下一个"
sleep 1
process_community 220 1100 || echo "第五个小区处理失败，继续下一个"
sleep 1
# 循环计数器（防止无限循环）
count=0
# 最大的滑动次数
max_count=5
while true; do
   # 1. 向上滑动189像素（720x1280分辨率） 100ms完成
   adb shell input swipe 220 1000 220 800 300
   sleep 0.5  # 等待滑动完成
   # 2. 执行点击→返回操作
   process_community 220 1100 || echo "第五个小区处理失败，继续下一个"
   sleep 1  # 等待页面加载
   adb shell input keyevent 4  # 返回
   # sleep 1  # 等待返回完成
   # 3. 检查是否达到最大循环次数
   count=$((count + 1))
   if [ $count -ge $max_count ]; then
     echo "达到最大循环次数，退出"
     break
  fi
done

